#pragma once

#include <boostext/util/make_shared.hpp>
#include <engine.core/noncopyable.hpp>

#include "exports.hpp"




namespace Engine
{
	namespace Video
	{
		struct ENGINE_VIDEO_API Fillmode
		{
			enum Type
			{
				wireframe,
				solid,
			};
		};
		///////////////////////////////////////////////////////////////////////////////////////////////////

		struct ENGINE_VIDEO_API Cullmode
		{
			enum Type
			{
				none,
				front,
				back,
			};
		};
		///////////////////////////////////////////////////////////////////////////////////////////////////




		class ENGINE_VIDEO_API RasterizerState : public noncopyable
		{
		public:

			SHARED(RasterizerState);



			virtual void setFillmode(Fillmode::Type mode) = 0;
			virtual void setCullmode(Cullmode::Type mode) = 0;
			virtual void setDepthclipping(bool enabled) = 0;
		};
		///////////////////////////////////////////////////////////////////////////////////////////
	}
	///////////////////////////////////////////////////////////////////////////////////////////////
}
///////////////////////////////////////////////////////////////////////////////////////////////////
